cmake_minimum_required(VERSION 3.16)

project(SerialPortEngine VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 6.2 REQUIRED COMPONENTS Quick QuickControls2 SerialPort)


add_library(SerialPortEngine STATIC
    serialport_engine.cpp
    serialport_engine.h
    ComStackTypes.h
)

target_link_libraries(SerialPortEngine PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt6::SerialPort)

qt_add_executable(appSerialPortEngine
    main.cpp
)

qt_add_qml_module(appSerialPortEngine
    URI SerialPortEngine
    VERSION 1.0
    QML_FILES Main.qml
#    SOURCES serialport_engine.h serialport_engine.cpp
    SOURCES ComStackTypes.h
    SOURCES device_controller_ui.h device_controller_ui.cpp
    QML_FILES SerialPortSettings.qml SerialPortPanel.qml
)

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
set_target_properties(appSerialPortEngine PROPERTIES
#    MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appSerialPortEngine
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

target_link_libraries(appSerialPortEngine
    PRIVATE Qt6::Quick Qt6::SerialPort Qt6::QuickControls2
    SerialPortEngine
)

include(GNUInstallDirs)
install(TARGETS appSerialPortEngine
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
